📞 API de UsuarioContatos - Documentação Completa
📋 Visão Geral
A API de UsuarioContatos é responsável por toda a gestão de contatos dos usuários no sistema CordenaAi, incluindo cadastro, atualização, consulta e exclusão de informações de contato como telefones, celulares, emails, WhatsApp e outros meios de comunicação. Esta API fornece a base para comunicação e contato dos usuários, permitindo a organização de dados de contato e facilitando a comunicação entre responsáveis, atletas e instituições.
🎯 Endpoints Disponíveis
📞 UsuarioContatos - Gestão de Contatos de Usuários
1. GET /api/UsuarioContatos/usuario/{usuarioId}
Listar Contatos por Usuário
- Descrição: Retorna todos os contatos associados a um usuário específico
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
usuarioId (path): ID único do usuário
- Resposta: Array de objetos UsuarioContatoReadDto
- Uso: Interface do usuário para visualizar seus contatos, perfil de contato
2. GET /api/UsuarioContatos/{id}
Obter Contato por ID
- Descrição: Retorna os dados completos de um contato específico
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do contato
- Resposta: Objeto UsuarioContatoReadDto completo
- Uso: Visualização de contato individual, edição de dados
3. POST /api/UsuarioContatos
Criar Novo Contato
- Descrição: Cria um novo contato para um usuário no sistema
- Método: POST
- Autenticação: Requerida (JWT Bearer Token)
- Body: Objeto UsuarioContatoCreateDto com dados obrigatórios
- Resposta: Objeto UsuarioContatoReadDto criado com ID gerado
- Uso: Formulários de cadastro de novos contatos
4. PUT /api/UsuarioContatos/{id}
Atualizar Contato
- Descrição: Atualiza os dados de um contato existente
- Método: PUT
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do contato
- Body: Objeto UsuarioContatoUpdateDto com dados atualizados
- Resposta: Objeto UsuarioContatoReadDto atualizado
- Uso: Formulários de edição de contatos
5. DELETE /api/UsuarioContatos/{id}
Excluir Contato
- Descrição: Remove um contato do sistema
- Método: DELETE
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
id (path): ID único do contato
- Resposta: Status 204 (No Content)
- Uso: Remoção de contatos desnecessários
🔧 Modelo de Dados
Estrutura do UsuarioContato
UsuarioContatoCreateDto (Criação)
{
"usuarioId": "string",
"responsavelContatoId": "string",
"tipo": 1,
"valor": "string",
"observacao": "string"
}
UsuarioContatoUpdateDto (Atualização)
{
"usuarioId": "string",
"responsavelContatoId": "string",
"tipo": 1,
"valor": "string",
"observacao": "string"
}
UsuarioContatoReadDto (Leitura)
{
"id": 1,
"usuarioId": "string",
"usuarioNome": "string",
"responsavelContatoId": "string",
"responsavelContatoNome": "string",
"tipo": 1,
"valor": "string",
"observacao": "string",
"dataCadastro": "datetime",
"dataAtualizacao": "datetime"
}
Tipos de Contato (TipoContato)
- 1: Telefone
- 2: Celular
- 3: Email
- 4: WhatsApp
- 5: Outro
🔐 Autenticação e Autorização
Todos os endpoints requerem:
- JWT Bearer Token no header
Authorization
- Permissões específicas baseadas no tipo de usuário:
- Administradores: Acesso completo a todos os endpoints
- Responsáveis: Acesso aos contatos de seus atletas
- Usuários: Acesso apenas aos próprios contatos
📊 Casos de Uso Principais
1. Cadastro de Contatos
POST /api/UsuarioContatos
Content-Type: application/json
Authorization: Bearer {token}
{
"usuarioId": "user-123",
"tipo": 2,
"valor": "11987654321",
"observacao": "Celular principal"
}
2. Busca de Contatos por Usuário
GET /api/UsuarioContatos/usuario/user-123
Authorization: Bearer {token}
3. Atualização de Contato
PUT /api/UsuarioContatos/contato-456
Content-Type: application/json
Authorization: Bearer {token}
{
"usuarioId": "user-123",
"tipo": 4,
"valor": "11987654321",
"observacao": "WhatsApp principal"
}
4. Visualização de Contato Específico
GET /api/UsuarioContatos/contato-456
Authorization: Bearer {token}
⚠️ Validações e Regras de Negócio
Validações Obrigatórias
- UsuarioId: Obrigatório, deve existir no sistema
- Tipo: Obrigatório, deve ser um valor válido do enum TipoContato
- Valor: Obrigatório, máximo 100 caracteres
- Observacao: Opcional, máximo 500 caracteres
Regras de Negócio
- Valor único: Não pode haver contatos duplicados do mesmo tipo para o mesmo usuário
- Formato de valor: Validação específica por tipo (telefone, email, etc.)
- ResponsavelContatoId: Opcional, se informado deve existir no sistema
- Auditoria: Todas as operações são logadas
- Soft Delete: Contatos excluídos são removidos permanentemente
Validações por Tipo de Contato
- Telefone/Celular: Formato brasileiro válido
- Email: Formato de email válido
- WhatsApp: Número de telefone válido
- Outro: Qualquer formato de texto
🚨 Tratamento de Erros
Códigos de Status HTTP
- 200: Sucesso
- 201: Criado com sucesso
- 204: Excluído com sucesso
- 400: Dados inválidos
- 401: Não autorizado
- 403: Acesso negado
- 404: Contato não encontrado
- 409: Conflito (contato duplicado)
- 500: Erro interno do servidor
Formato de Erro
{
"error": "string",
"message": "string",
"details": "string",
"timestamp": "datetime"
}
📈 Performance e Limitações
Limitações
- Paginação: Listas retornam máximo 100 registros por página
- Rate Limiting: 1000 requests por hora por usuário
- Timeout: 30 segundos por requisição
- Tamanho do valor: Máximo 100 caracteres
- Observação: Máximo 500 caracteres
Otimizações
- Cache: Dados de contatos são cacheados por 5 minutos
- Índices: Busca otimizada por usuário e tipo
- Compressão: Respostas comprimidas com gzip
🔄 Integração com Outros Módulos
Módulos Relacionados
- Usuários: Associação obrigatória
- Responsáveis: Associação opcional para contatos de responsáveis
- Mensagens: Dados para envio de notificações
- Autenticação: Validação de usuários
- Relatórios: Dados para análises de comunicação
📱 Uso em Aplicações
Web App
- Formulários de cadastro/edição de contatos
- Perfil do usuário com informações de contato
- Dashboard administrativo para gestão de contatos
Mobile App
- Visualização de contatos do usuário
- Edição rápida de informações de contato
- Integração com agenda telefônica
🛠️ Manutenção e Monitoramento
Logs Importantes
- Criação de novos contatos
- Atualizações de dados sensíveis
- Tentativas de acesso não autorizado
- Erros de validação de formato
Métricas Monitoradas
- Número de contatos por usuário
- Taxa de sucesso das operações
- Tempo de resposta dos endpoints
- Uso de recursos por endpoint
📚 Exemplos Práticos
Fluxo Completo de Cadastro
- Validação de dados no backend pela própria API
- POST /api/UsuarioContatos com dados validados
- Associação automática com usuário
- Envio de notificação para usuário (se configurado)
- Criação de registro no sistema
Fluxo de Atualização
- GET /api/UsuarioContatos/{id} para obter dados atuais
- Validação de alterações no backend pela própria API
- PUT /api/UsuarioContatos/{id} com dados atualizados
- Confirmação de atualização com dados atualizados
Fluxo de Exclusão
- Confirmação de exclusão no frontend
- DELETE /api/UsuarioContatos/{id} para remoção
- Confirmação de exclusão (204 No Content)
- Atualização da interface do usuário
🔧 Configurações Específicas
Tipos de Contato Suportados
- Telefone: Para números fixos
- Celular: Para números móveis
- Email: Para endereços de email
- WhatsApp: Para números do WhatsApp
- Outro: Para outros tipos de contato
Validações Específicas
- Telefone/Celular: Formato brasileiro (XX) XXXXX-XXXX
- Email: Formato RFC 5322
- WhatsApp: Número de telefone válido
- Outro: Texto livre
Versão: 1.0
Última Atualização: Outubro de 2025
Responsável: Equipe de Desenvolvimento CordenaAi